home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok59.lha / QSort / QSortTest.mod < prev    next >
Text File  |  1993-08-15  |  2KB  |  94 lines

  1. (*------------------------------------------------------------------)
  2.  
  3. :Program.    QSortTest
  4. :Contents.   Programm zum testen vom QSort-Algorithmus.
  5. :Author.     Philippe Gressly (PHILU), hartmut Goebel [hG]
  6. :Address.    Näfenhaus, CH-8926 Kappel a/Albis
  7. :History     V0.99 (2.8.91)
  8. :History     V0.99o 27 Sep 1991 [hG] ported to Oberon an adapted
  9. :Copyright.  PD
  10. :Language.   Oberon
  11. :Translator. Amiga Oberon 2.00
  12.  
  13. (------------------------------------------------------------------*)
  14. MODULE QSortTest;
  15.  
  16. IMPORT
  17.   io,
  18.   qs: QSort;
  19.  
  20. CONST
  21.   MAX = 1000;
  22.  
  23. VAR
  24.   Arr: ARRAY MAX OF INTEGER;
  25.  
  26.   end: INTEGER;   (* letzte genutzte Zahl im Array.
  27.                    * end muss kleiner als MAX sein.
  28.                    *)
  29.   k  : INTEGER;   (* Laufvariable *)
  30.   ch : CHAR;      (* Wird bei Read (warte auf Returntaste) gebraucht. *)
  31.  
  32.  
  33. PROCEDURE grth*(i,j: INTEGER): INTEGER;
  34. BEGIN
  35.   IF Arr[i] > Arr[j] THEN RETURN 1
  36.   (* ELSIF Arr[i] < Arr[j] THEN RETURN -1   wird nicht benötigt *)
  37.   ELSE RETURN 0
  38.   END;
  39. END grth;
  40.  
  41.  
  42. PROCEDURE swap*(i,j: INTEGER);
  43. VAR
  44.   t: INTEGER;
  45. BEGIN
  46.   t := Arr[i];
  47.   Arr[i] := Arr[j];
  48.   Arr[j] := t
  49. END swap;
  50.  
  51.  
  52. (****************************************)
  53. (****** H A U P T P R O G R A M M  ******)
  54. (****************************************)
  55.  
  56.  
  57. BEGIN (* QSortTest *)
  58.   io.WriteString("Anzahl zu sortierende Zahlen: ");
  59.   io.ReadIntegerOk(end);
  60.   IF (end >= 1) AND (end <= MAX) THEN
  61.     io.WriteString("Zahlen zwischen 0 und 32767 sind erlaubt\n");
  62.  
  63.     k := 0;
  64.     REPEAT
  65.        io.WriteInt(k+1, 3);
  66.        io.WriteString(". Zahl: "); io.ReadIntegerOk(Arr[k]);
  67.        INC(k);
  68.     UNTIL k = end;
  69.  
  70.     io.WriteString("Start...");
  71.  
  72.    (* QUICKSORT AUFRUF  *)
  73.    (*********************)
  74.     qs.QSort(0, end-1, grth, swap);
  75.  
  76.     io.WriteString("\nQSort Fertig\n\n");
  77.  
  78.     k := 0;
  79.     REPEAT
  80.       io.WriteInt(Arr[k], 6);
  81.       INC(k);
  82.     UNTIL k = end;
  83.     io.WriteLn;
  84.  
  85.   ELSE
  86.     io.WriteString("Anzahl muß sein von 1 bis "); io.WriteInt(MAX, 3);
  87.     io.WriteLn;
  88.   END;
  89.  
  90. END QSortTest.
  91.  
  92.  
  93.  
  94.